
// renderer.js

mapinfo = {
    title: '高德地图',
    zoom: 14,
    center: [116.397428, 39.90923], // 北京天安门坐标
    viewMode: '3D', // 3D 视图（可选 '2D'）
    mapStyle: 'amap://styles/normal', // 地图样式（可选）
    mapMode: 1          // 进入不同的模式， 1: 地图点击模式，2: 测距模式, 3: 划线模式，4：路径规划模式
}

const map = new AMap.Map('map-container', {
    center: mapinfo.center, // 北京天安门坐标
    zoom: mapinfo.zoom, // 缩放级别（3-20）
    viewMode: '3D', // 3D 视图（可选 '2D'）
    mapStyle: mapinfo.mapStyle // 地图样式（可选）
  });

map.plugin(["AMap.MapType"],function(){
    //地图类型切换
    var type= new AMap.MapType({
        defaultType: 0,
    });
    map.addControl(type);
});

// 添加地图控件
map.plugin(["AMap.ToolBar"],function(){
    //加载工具条
    var tool = new AMap.ToolBar();
    map.addControl(tool);
});

// 添加比例尺控件
map.plugin(["AMap.Scale"],function(){
    var scale = new AMap.Scale();
    map.addControl(scale);
});

var mousetool;
var ruler;

var drawLinePoints = []; // 用于存储划线点的数组

// 鼠标工具
map.plugin(["AMap.MouseTool"],function(){
    mousetool = new AMap.MouseTool(map);
    ruler = new AMap.RangingTool(map);

    ruler.on("end", function(e) {
        console.log("测距结束", e);
        ruler.turnOff(); // 关闭测距工具
        map.mapMode = 1; // 切换回地图点击模式
    });

    mousetool.on("draw", function(e) {
        console.log("划线结束", e);
        // map.mapMode = 1; // 切换回地图点击模式
        // drawLinePoints.push(e);
    });
 
});


var MSearch;

var keywordSearch_CallBack = function(status, result) {
    console.log("搜索状态：", status);
    console.log("搜索结果：", result);
}

map.plugin(['AMap.PlaceSearch'], function() {
    var PlaceSearchOptions = { //设置PlaceSearch属性
        type: "", //数据类别
        pageSize: 10, //每页结果数,默认10
        pageIndex: 1, //请求页码，默认1
        extensions: "base" //返回信息详略，默认为base（基本信息）
    };
    MSearch = new AMap.PlaceSearch(PlaceSearchOptions); //构造PlaceSearch类
    MSearch.on("selectChanged", keywordSearch_CallBack); //返回结果
});

var keyworkSearch = function(keyword) {
    if (MSearch) {
        MSearch.search(keyword); //关键字查询
    } else {
        console.error("PlaceSearch 未初始化");
    }
}


/**
 *  
 */
var drawLineInfo = {
    strokeColor: "red", // 线颜色
    strokeOpacity: 0.8, // 线透明度
    strokeWeight: 3, // 线宽度
    strokeStyle: "solid", // 线样式
    strokeDasharray: [10, 5], // 虚线样式
    lineJoin: "round", // 线连接样式
    lineCap: "round", // 线端点样式
    startPoint: null, // 起点坐标
    endPoint: null, // 终点坐标
    startMarker: null, // 起点标记
    endMarker: null, // 终点标记
    isStartPointDraw: false, // 是否开始绘制
    type: 1,            // 1:划线， 2: 画多边形
};

 // 创建一个 Icon
var startIcon = new AMap.Icon({
    // 图标尺寸
    size: new AMap.Size(25, 34),
    // 图标的取图地址
    image: '//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png',
    // 图标所用图片大小
    imageSize: new AMap.Size(135, 40),
    // 图标取图偏移量
    imageOffset: new AMap.Pixel(-9, -3)
});

// 创建一个 icon
var endIcon = new AMap.Icon({
    size: new AMap.Size(25, 34),
    image: '//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png',
    imageSize: new AMap.Size(135, 40),
    imageOffset: new AMap.Pixel(-95, -3)
});

// 将 icon 传入 marker
var drawLineMarker = function(type, lnglat, icon){
    return new AMap.Marker({
        position: lnglat,
        icon: icon,
        offset: new AMap.Pixel(-13, -30)
    });
}


const infoWindow = new AMap.InfoWindow({
    //创建信息窗体
    isCustom: true, //使用自定义窗体
    content: "<div>HELLO,AMAP!</div>", //信息窗体的内容可以是任意html片段
    offset: new AMap.Pixel(16, -45),
});

const rangleTool = document.getElementById('btnRangleTool')
rangleTool.addEventListener('click', () => {
    map.mapMode = 2; // 切换到测距模式
    ruler.turnOn(); // 开启测距工具
    console.log('开启测距工具');
});

var polylineObj;

const btnDrawLine = document.getElementById('btnDrawLine')
btnDrawLine.addEventListener('click', () => {

    map.mapMode = 3; // 切换到划线模式
    drawLineInfo.type = 1; // 设置为划线模式

    if (mousetool) {
        polylineObj = mousetool.polyline({strokeColor: drawLineInfo.strokeColor, strokeOpacity: drawLineInfo.strokeOpacity, strokeWeight: drawLineInfo.strokeWeight, strokeStyle: drawLineInfo.strokeStyle, strokeDasharray: drawLineInfo.strokeDasharray, lineJoin: drawLineInfo.lineJoin, lineCap: drawLineInfo.lineCap}); // 开启划线工具
        console.log('开启划线工具');
    } else {
        console.error('MouseTool 未初始化');
    }
});

const btnRoadSearch = document.getElementById('btnRoadSearch')
btnRoadSearch.addEventListener('click', () => {

    map.mapMode = 4; // 切换到路径规划模式
    if (mousetool) {
        mousetool.route(); // 开启路径规划工具
        console.log('开启路径规划工具');
    } else {
        console.error('MouseTool 未初始化');
    }
});

const btnTrackPlay = document.getElementById('btnTrackPlay')
btnTrackPlay.addEventListener('click', () => {
    map.mapMode = 5; // 切换到轨迹播放模式
    if(drawLinePoints.length > 0) {
        // 如果有划线点，则开始播放轨迹
        console.log('开始播放轨迹：', drawLinePoints);
        // 这里可以添加轨迹播放的逻辑
    }else{
        console.warn('没有划线点，无法播放轨迹');
    }
});

const btnKeywordSearch = document.getElementById('btnKeywordSearch')
btnKeywordSearch.addEventListener('click', () => {
    const keyword = document.getElementById('txtSearchKeyword').value; // 获取输入的关键字
    if (keyword) {
        console.log('执行关键字搜索：', keyword);
        keyworkSearch(keyword); // 执行关键字搜索
    } else {
        console.warn('请输入关键字');
    }
});

// 确保 SDK 已加载完成（CDN 方式可通过回调，本地方式可直接执行）
window.onload = () => {
  // 初始化地图

  // 添加标记（可选）
  const marker = new AMap.Marker({
    position: [116.397428, 39.90923],
    title: '天安门'
  });
  map.add(marker);

  // 监听地图点击事件（示例：向主进程发送坐标）
  map.on('click', (e) => {

    if(map.mapMode === 1) {
       const lnglat = e.lnglat; // 经纬度对象

        infoWindow.setContent(`<div>点击位置：${lnglat.getLng().toFixed(5)}, ${lnglat.getLat().toFixed(5)}</div>`);
        infoWindow.open(map, e.lnglat); //打开信息窗体
        // 通过 IPC 发送到主进程
        window.mainapp.sendToMain('map-click', {
            lng: lnglat.getLng(),
            lat: lnglat.getLat()
        });
    }else if(map.mapMode === 2) {
        // 如果当前处于测距模式
    
        // if(drawLineInfo.isStartPointDraw) {
        //     // 如果已经绘制了起点，则绘制终点
        //     drawLineInfo.startPoint = e.lnglat;
        //     drawLineInfo.startMarker = drawLineMarker('start', e.lnglat, startIcon);
        //     map.add(drawLineInfo.startMarker);
        //     drawLineInfo.isStartPointDraw = false; // 重置状态
        //     console.log('起点坐标：', drawLineInfo.startPoint);
        // }
        // else {
        //     // 如果还没有绘制起点，则绘制起点
        //     drawLineInfo.endPoint = e.lnglat;
        //     drawLineInfo.endMarker = drawLineMarker('end', e.lnglat, endIcon);
        //     map.add(drawLineInfo.startMarker);

        //     mousetool.polyline({path:[drawLineInfo.startPoint, drawLineInfo.endPoint], strokeColor: drawLineInfo.strokeColor, strokeOpacity: drawLineInfo.strokeOpacity, strokeWeight: drawLineInfo.strokeWeight, strokeStyle: drawLineInfo.strokeStyle, strokeDasharray: drawLineInfo.strokeDasharray, lineJoin: drawLineInfo.lineJoin, lineCap: drawLineInfo.lineCap});

        //     drawLineInfo.isStartPointDraw = true; // 设置状态为已绘制起点
        //     console.log('起点坐标：', drawLineInfo.startPoint);
        // }
        
    }else if(map.mapMode === 3) {
    //   console.warn('当前处于划线模式，请先结束划线');
    //   return;
        console.log('划线模式下点击坐标：', e.lnglat);
        drawLinePoints.push(e.lnglat); // 将点击的坐标添加到划线点数组中
    }
   
  });

  map.on('rightclick', (e) => {
    if(map.mapMode === 2) {
        // 如果当前处于测距模式
        console.log('测距模式下鼠标移动坐标：', e.lnglat);
    }else if(map.mapMode === 3) {
        // 如果当前处于划线模式
        console.log('划线模式下鼠标移动坐标：', e.lnglat);

        // if(drawLineInfo.type === 1) {
        //     const linePointArray = mousetool["overlays"]["polyline"];
        //     console.log('当前划线点数组：', linePointArray);
        // }

        // console.log(mousetool);

        console.log('划线点数组：', drawLinePoints);
        
        mousetool.close(); // 关闭鼠标工具
        map.mapMode = 1; // 切换回地图点击模式
    }
  });
};

